10 Z$ = " Hacking Construction Set ":Y$ = " by Cyborg ": TEXT : HOME : PRINT Z$: PRINT Y$: VTAB 4: INVERSE : PRINT SPC( 40): VTAB 12: PRINT SPC( 40): FOR A = 5 TO 11: VTAB A: PRINT " ";: HTAB 40: PRINT " ": NEXT : VTAB 18: PRINT SPC( 40): NORMAL
11 N$(1) = "Run HCS":N$(2) = "Read Docs":N$(3) = "View Text":N$(4) = "Dos Cmd":N$(5) = "Exit":N = 5: FOR A = 1 TO N: VTAB 5 +A: HTAB 16: PRINT N$(A): NEXT
12 P = 1: VTAB 20: PRINT " The author of this program takes no ": PRINT " responsibility for any damages,": PRINT " accidental or otherwise, incurred by ": PRINT " the use or abuse of this program."
55 K = PEEK( -16384): IF K <128 THEN GOSUB 215: GOTO 55
60 K = K -128: POKE -16368,0: GOSUB 215: IF K = 21 OR K = 8 OR K = 10 OR K = 11 THEN VTAB 5 +P: HTAB 13: PRINT " ";: HTAB 26: PRINT " ": GOTO 75
65 IF K = 13 THEN 90
70 GOTO 55
75 IF K = 8 OR K = 11 THEN P = P -1: IF P <1 THEN P = N: GOTO 50
80 IF K = 21 OR K = 10 THEN P = P +1: IF P >N THEN P = 1: GOTO 50
85 GOTO 50
90 IF P = 1 THEN TEXT : HOME : PRINT D$"RUN HCS"
95 IF P = 2 THEN F$ = "HCS DOCS": GOSUB 115
100 IF P = 3 THEN HOME : PRINT
105 IF P = 3 THEN PRINT "Filename or [RETURN] to catalog": INPUT ":";F$: IF F$ = "" THEN HOME : PRINT D$"CATALOG": PRINT : GOTO 105
106 IF P = 4 THEN GOTO 500
110 IF P = 5 THEN TEXT : HOME : NEW
115 IF PEEK(768) < >32 THEN GOSUB 240
120 ONERR GOTO 130
125 PRINT D$"VERIFY"F$: GOTO 135
130 PRINT : PRINT : PRINT "<CTRL-G>Disk error!": FOR D = 1 TO 1000: NEXT D: POKE 216,0: GOTO 10
135 PRINT D$"PR#3": ONERR GOTO 210
140 C = 0: PRINT "Press P for printout or any key to continue ";: GET X$: PRINT : HOME : IF X$ = "P" THEN C = 1
145 X$ = " Text file viewer Hacking Construction Set File:" +F$: FOR A = LEN(X$) TO 79:X$ = X$ +" ": NEXT A: INVERSE : PRINT X$: VTAB 2: PRINT " Use <- -> to control speed [ESC] aborts reading [SPACE] pauses file ": NORMAL : POKE 34,2
146 IF C = 1 THEN PRINT D$"PR#1": PRINT : PRINT "Hacking Construction Set File:"F$: PRINT
155 NORMAL : POKE 34,2: HOME :B = 150: PRINT D$"OPEN"F$: PRINT D$"READ"F$
160 CALL 768,A$:A$ = MID$ (A$,1): IF C = 1 THEN 205
170 K = PEEK( -16384):K = K -128: POKE -16368,0
180 IF K = 32 THEN K = PEEK( -16384): IF K <128 THEN 180
185 POKE -16368,0: IF K = 27 THEN GOTO 210
190 IF K = 8 THEN B = B -10: IF B <0 THEN B = 0
195 IF K = 21 THEN B = B +10: IF B >250 THEN B = 250
200 SPEED= B
205 PRINT A$: GOTO 160
210 IF PR = 1 THEN PRINT : PRINT : PRINT : PRINT D$"CLOSE": PRINT D$"PR#0": POKE 216,0: GOTO 10
240 DATA 32,190,222,32,227,223,169,128,133,51,32,106,253,160,0,138,145,131,169,0,200,145,131,169,2,200,145,131,76,57,213: FOR I = 1 TO 31: READ X: POKE 767 +I,X: NEXT : RETURN
500 VTAB 14
501 POKE 34,12: POKE 35,17: HOME
502 POKE 44452,5: POKE 44605,4
510 PRINT "Dos:";
511 GET X$
515 IF X$ = CHR$(27) THEN POKE 44452,21: POKE 44605,20: POKE 34,0: POKE 35,24: GOTO 50
520 IF X$ = CHR$(13) THEN PRINT : GOTO 550
530 IF X$ = CHR$(8) AND LEN(C$) < = 1 THEN PRINT CHR$(8);" ":C$ = "": GOTO 510
531 IF X$ = CHR$(8) THEN PRINT CHR$(8);:C$ = LEFT$(C$, LEN(C$) -1): GOTO 511